const crypto = require('crypto');
const jwt = require('jsonwebtoken');

module.exports = {
    /**
     * 把明文密码加密成密文密码
     * @param {string} raw_password 要加密的原始明文密码
     */
    passwordEncoder(raw_password) {
        // this 是 helper 对象，在其中可以调用其他 helper 方法
        // this.ctx => context 对象
        // this.app => application 对象
        return crypto
            .createHmac('sha256', this.app.config.keys)
            .update(raw_password)
            .digest('hex');
    },
    /**
     * 生成用户 token（令牌）
     * @param {object} user 要保存到 token 中的用户信息
     */
    genToken(user) {
        // 第二个参数：加密使用的字符串
        return jwt.sign(user, this.app.config.keys, { expiresIn: '2h' });
    },
    /**
     * 校验token是否合法（是不是服务器签发的）
     * @param {string} token 要校验的 token
     */
    checkToken(token) {
        return jwt.verify(token, this.app.config.keys);
    },
};
